#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <math.h>

//int removeElement(int* nums, int numsSize, int val)
//{
//	int src = 0;
//	int dst = 0;
//	while (src < numsSize)
//	{
//		if (nums[src] != val)
//		{
//			nums[dst++] = nums[src++];
//		}
//		else
//		{
//			src++;
//		}
//	}
//	return dst;
//}



//int removeDuplicates(int* nums, int numsSize)
//{
//    int src = 0;
//    int dst = 1;
//    while (dst < numsSize)
//    {
//        if (nums[src] != nums[dst])
//        {
//            nums[++src] = nums[dst++];
//        }
//        else
//        {
//            ++dst;
//        }
//    }
//    return src + 1;
//}



void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n)
{
    int i1 = m - 1, i2 = n - 1;
    int j = m + n - 1;
    while (i1 >= 0 && i2 >= 0)
    {
        if (nums1[i1] > nums2[i2])
        {
            nums1[j--] = nums1[i1--];
        }
        else
        {
            nums1[j--] = nums2[i2--];
        }
    }
    while (i2 >= 0)
    {
        nums1[j--] = nums2[i2--];
    }
}